package co.edu.udea.herbario.dao;

import co.edu.udea.herbario.dto.Departamento;
import co.edu.udea.herbario.excepcion.Excepcion;

/**
 * Clase de tipo interface que contiene la declaracion de los metodos utilizados para gestionar
 * los datos de la tabla Departamento entre la persistencia y la logica de la aplicacion
 * 
 * @author Lorena Orozco, Alejandro Areiza, Marcela Colorado
 *
 */

public interface DepartamentoDao
{	
	/**
	 * Metodo que obtiene desde la tabla Departamento el elemento referenciado con el codigo indicado
	 * como parametro
	 * 
	 * @param cod es el codigo que identifica al departamento dentro del sistema
	 * 
	 * @return retorna un objeto de tipo Departamento
	 * 
	 * @throws Excepcion
	 */
	public Departamento obtener(int cod) throws Excepcion;
	
	/**
	 * Metodo para crear un elemento dentro de la tabla Departamento
	 * 
	 * @param dep es un objeto de tipo Departamento que contiene los datos del elemento que
	 * se desea ingresar en la tabla Departamento
	 * 
	 * @return retorna un entero: res = 1 si se realizo correctamente la creacion, de
	 * lo contrario res = -1
	 * 
	 * @throws Excepcion
	 */
	public int crear(Departamento dep) throws Excepcion;
	
	/**
	 * Modifica el estado (activo o inactivo) de un elemento de la tabla Departamento que coincida con los 
	 * datos que contiene el objeto pasado como parametro
	 * 
	 * @param dep es un objeto de tipo Departamento
	 * 
	 * @return retorna un entero: res = 1 si se realizo correctamente la eliminacion, de
	 * lo contrario res = -1
	 * 
	 * @throws Excepcion
	 */
	public int eliminar(Departamento dep) throws Excepcion;
}
